//package git.soulbgm.pseudo.code;
//
///**
// * 伪代码
// *
// * @author SoulBGM
// * @date 2021/08/02
// */
//public class PseudoCode {
//
//    public List<IPBean> crawl(String api, int index) {
//        String html = HttpUtils.getResponseContent(api + index);
//        System.out.println(html);
//
//        Document document = Jsoup.parse(html);
//        Elements eles = document.selectFirst("table").select("tr");
//
//        for (int i = 0; i < eles.size(); i++) {
//            if (i == 0) {
//                continue;
//            }
//            Element ele = eles.get(i);
//            String ip = ele.children().get(1).text();
//            int port = Integer.parseInt(ele.children().get(2).text().trim());
//            String typeStr = ele.children().get(5).text().trim();
//
//            int type;
//            if ("HTTP".equalsIgnoreCase(typeStr)) {
//                type = IPBean.TYPE_HTTP;
//            } else {
//                type = IPBean.TYPE_HTTPS;
//            }
//            IPBean ipBean = new IPBean(ip, port, type);
//            ipList.add(ipBean);
//        }
//        return ipList;
//    }
//
//    /**
//     * 检测代理ip是否有效
//     *
//     * @param ipBean
//     * @return
//     */
//    public static boolean isValid(IPBean ipBean) {
//        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipBean.getIp(), ipBean.getPort()));
//        try {
//            URLConnection httpCon = new URL("https://www.baidu.com/").openConnection(proxy);
//            httpCon.setConnectTimeout(5000);
//            httpCon.setReadTimeout(5000);
//            int code = ((HttpURLConnection) httpCon).getResponseCode();
//            System.out.println(code);
//            return code == 200;
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return false;
//    }
//
//    /**
//     * 得到响应内容
//     *
//     * @param headerMap 请求头部
//     * @param url       url
//     * @param ipBean    ip
//     * @return
//     */
//    public static String getResponseContent(String url, Map<String, List<String>> headerMap, IPBean ipBean) throws Exception {
//        HttpsURLConnection connection = null;
//
//        // 设置代理
//        if (ipBean != null) {
//            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipBean.getIp(), ipBean.getPort()));
//
//            connection = (HttpsURLConnection) new URL(url).openConnection(proxy);
//
//            if (ipBean.getType() == IPBean.TYPE_HTTPS) {
//                SSLContext sslContext = SSLContext.getInstance("SSL");
//                sslContext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
//                connection.setSSLSocketFactory(sslContext.getSocketFactory());
//                connection.setHostnameVerifier(new TrustAnyHostnameVerifier());
//            }
//        }
//
//        if (connection == null)
//            connection = (HttpsURLConnection) new URL(url).openConnection();
//
//        // 添加请求头部
//        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36");
//        if (headerMap != null) {
//            Iterator<Map.Entry<String, List<String>>> iterator = headerMap.entrySet().iterator();
//            while (iterator.hasNext()) {
//                Map.Entry<String, List<String>> entry = iterator.next();
//                List<String> values = entry.getValue();
//                for (String value : values)
//                    connection.setRequestProperty(entry.getKey(), value);
//            }
//        }
//
//        InputStream inputStream = connection.getInputStream();
//        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
//
//        StringBuilder stringBuilder = new StringBuilder();
//        String line;
//        while ((line = reader.readLine()) != null) {
//            stringBuilder.append(line);
//        }
//        reader.close();
//        inputStream.close();
//        return stringBuilder.toString();
//    }
//
//    private static class TrustAnyTrustManager implements X509TrustManager {
//
//        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
//        }
//
//        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
//        }
//
//        public X509Certificate[] getAcceptedIssuers() {
//            return new X509Certificate[]{};
//        }
//    }
//
//    private static class TrustAnyHostnameVerifier implements HostnameVerifier {
//        public boolean verify(String hostname, SSLSession session) {
//            return true;
//        }
//    }
//
//
//    /**
//     * ffmpeg程序转换m3u8
//     *
//     * @param folderUrl    文件夹的url
//     * @param fileName     文件名称
//     * @param fileFullName 文件的全名
//     * @return boolean
//     */
//    private boolean processM3U8(String folderUrl, String fileName, String fileFullName) {
//        //这里就写入执行语句就可以了
//        List commend = new java.util.ArrayList();
//        commend.add(ffmpegpath);
//        commend.add("-i");
//        commend.add(folderUrl + fileName);
//        commend.add("-c:v");
//        commend.add("libx264");
//        commend.add("-hls_time");
//        commend.add("20");
//        commend.add("-hls_list_size");
//        commend.add("0");
//        commend.add("-c:a");
//        commend.add("aac");
//        commend.add("-strict");
//        commend.add("-2");
//        commend.add("-f");
//        commend.add("hls");
//        commend.add(folderUrl + fileFullName + ".m3u8");
//        try {
//            ProcessBuilder builder = new ProcessBuilder();
//            builder.command(commend);
//            Process p = builder.start();
//            int i = doWaitFor(p);
//            System.out.println("------>" + i);
//            p.destroy();
//            return true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
//
//    public String getText(File file) {
//        Ocr ocr;
//        try {
//            Ocr.setUp();
//            ocr = new Ocr();
//            ocr.startEngine("eng", Ocr.SPEED_SLOW);
//            String s = ocr.recognize(new File[]{file},
//                    Ocr.RECOGNIZE_TYPE_ALL, Ocr.OUTPUT_FORMAT_PLAINTEXT);
//            return s;
//        } finally {
//            ocr.stopEngine();
//        }
//    }
//
//    public void get() {
//        //创建HttpClient
//        CloseableHttpClient httpClient = HttpClients.createDefault();
//        //目标网址
//        String url = "http://www.oschina.net/";
//        //创建请求方法
//        HttpGet httpGet = new HttpGet(url);
//        //设置Header模拟浏览器行为
//        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
//        try {
//            //发送请求，收取响应
//            CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
//            if (httpResponse.getStatusLine().getStatusCode() == 200) {
//                //解析响应
//                String entity = EntityUtils.toString(httpResponse.getEntity());
//                System.out.println(entity);
//            }
//            EntityUtils.consume(httpResponse.getEntity());
//            httpResponse.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public void click() {
//        System.getProperties().setProperty("webdriver.chrome.driver", "C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe");
//        WebDriver webDriver = new ChromeDriver();
//        try {
//            webDriver.get("http://list.taobao.com/itemlist/default.htm?cat=50000671&viewIndex=1&as=0&atype=b&style=grid&same_info=1&isnew=2&tid=0&_input_charset=utf-8");
//            try {
//                Thread.sleep(5000); // 等待浏览器加载
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            webDriver.manage().window().maximize(); // 使浏览器窗口最大化
//            //js代码
//            String js1 = "return document.documentElement.scrollHeight;";  // 滑动条的位置值
//            String js2 = "scroll(0,10000);";
//            ((JavascriptExecutor) webDriver).executeScript(js2);//执行js代码，返回浏览器滚动高度
//            try {
//                Thread.sleep(3000); //等待浏览器加载
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            ((JavascriptExecutor) webDriver).executeScript(js1);//执行js代码，滚动10000像素
//            try {
//                Thread.sleep(3000);
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//            WebElement whref = webDriver.findElement(By.cssSelector("a.J_Ajax.btn.next"));//得到要点击的“下一页”链接
//            whref.click();//进行点击
//            //webDriver.close();这句先注视掉，以便观察结果
//        } catch (NoSuchElementException ex) {
//            System.out.println("找不到要的下一页链接！");
//            //webDriver.close();这句先注视掉，以便观察结果
//        }
//    }
//
//    public static void main(String[] args) {
//        //要进行获取的字符串文章
//        String ss=" <html><body><img src=\"/img/loading.gif\"> <script type=\"text/javascript\">"
//                +"$('body').append('<img id=\"nimg\" style=\"display:none;\" src=\"http://qrcode.41.cn/yc/qrcode/mb?orderNo=3063646075884371&amt=11.0&tradeDate=20161111&bankCode=WEIXIN&merchUrl=1L4%2FNMk5Whq5XzYy2%2B3nRufsBmmRuyoE%2FxoVeJK%2BK%2FOeEb1e08eODusFs7M7CHa8fQtKKadQJuc%3D&reqUrl=8785%2FPayMobao%2Fmobao%2Fpay.do&mac=1f244432485d4287b4ed2a28cc578948\"/>');"
//                +"var nimg = $('#nimg');nimg.on('load', function() {img.remove();nimg.appendTo(pimg);nimg.removeAttr('style');});})();});</script> </body></html>";
//
//        String reg = "<img[^<>]*?\\ssrc=['\"]?(.*?)['\"]?(\\s.*?)?>";
//        List<String> list = match(ss,reg);
//        //list.get(1);获取第二个img的src属性值
//        System.out.println(list.get(1));
//    }
//
//    public static String sendGETRequest(String path, Map params, String ecoding) throws Exception{
//        //拼接GET参数条件
//        StringBuilder url = new StringBuilder(path);
//        url.append("?");
//        for(Map.Entry entry : params.entrySet()){
//            url.append(entry.getKey()).append("=");
//            url.append(URLEncoder.encode(entry.getValue(), ecoding));
//            url.append("&");
//        }
//        url.deleteCharAt(url.length() - 1);
//        //发起请求
//        HttpURLConnection conn = (HttpURLConnection)new URL(url.toString()).openConnection();
//        conn.setConnectTimeout(5000);
//        conn.setRequestMethod("GET");
//        if(conn.getResponseCode() == 200){
//            //获取请求返回来的结果-【这是返回Str的情况Json的基本同理,把返回来的json字符串转换成Json对象就行了】
//            StringBuffer buffer = new StringBuffer();
//            InputStream inputStream = conn.getInputStream();
//            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
//            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//            String str = null;
//            while ((str = bufferedReader.readLine()) != null) {
//                buffer.append(str);
//            }
//            bufferedReader.close();
//            inputStreamReader.close();
//            // 释放资源
//            inputStream.close();
//            inputStream = null;
//            conn.disconnect();
//            return buffer.toString();
//        }
//        return null;
//    }
//
//}
